/*=============================================================================

  APPLICATION MANAGER MODULE

  FILE: BKmgr.cpp
  
  DESCRIPTION

    Manager Module Definition

  EXTERNALIZED FUNCTIONS

    
  Copyright (c) DaeSung Engineering Inc. All rights reserved.

=============================================================================*/
/*=============================================================================

                             EDIT HISTORY

  ---------  -------  -------------------------------------------------------
    when       who     what, where, why
  ---------  -------  -------------------------------------------------------
   06/28/03   nso4th   Version 0.1

=============================================================================*/

/*=============================================================================
  HEADER INCLUSION
=============================================================================*/
#include <BKmgr_MOD.h>

/*=============================================================================
  CONSTANT IMPLEMENTATION
=============================================================================*/
#define STATE_TICK_TIME				(60000) // 60sec.

/*=============================================================================
  BKmgr CLASS IMPLEMENTATION
=============================================================================*/
BKmgr::BKmgr():mgrBase()
{
	// Set the application name
	SetAppName(CUST_APP_NAME_SHORT);
	
	// Retrieve the event
	Event_SetType(BK_MGR);
	
	// Retrieve the state machine control
	State_SetTickTime(STATE_TICK_TIME);
	State_SetEventID(BKmgr_CHANGE_MAJSTATE_E, 0x00);

	MON_Alloc();
	CMD_Alloc();
}

BKmgr::~BKmgr()
{
	MON_Free();
	CMD_Free();
}

boolean BKmgr::Init(void)
{
	ObjList_Set(BK_MGR, this);
	
	mgrBase::Init();
	
	State_Major(0);

	return	TRUE;
}

boolean BKmgr::Close(void)
{
	ObjList_Set(BK_MGR, NULL);

	MON_LOCK(TRUE);

	// Kill the state timer
	STATE_LOCK();
	if(m_tickTimer)
	{
		Timer_Kill(m_tickTimer);
		Timer_Free(m_tickTimer);
		m_tickTimer = NULL;
	}
	Event_SetRecv(NULL);

	Task_Killed(m_pTask);
	mgrBase::Close();

	return	TRUE;
}

void BKmgr::STATE_SYNC(mcxt m_pTask)
{
	if(m_reqWait == FALSE)
		return;
	
	m_monLock = m_reqLock;
	m_reqWait = FALSE;

	Sync_Set(m_monSync, TRUE);
}

void BKmgr::STATE_POLLING(void)
{
}

void BKmgr::bkON(dword bkMASK)
{
	m_bkMASK |= bkMASK;
}

void BKmgr::bkOFF(dword bkMASK)
{
	m_bkMASK &= (~bkMASK);
}

void BKmgr::bkSET(dword bkMASK)
{
	m_bkMASK = bkMASK;
}

/*--- END OF BKmgr.CPP ---*/
